import numpy as np
运算 | 函数 |
---|---|
a + b |
add(a,b) |
a - b |
subtract(a,b) |
a * b |
multiply(a,b) |
a / b |
divide(a,b) |
a ** b |
power(a,b) |
a % b |
remainder(a,b) |
以乘法为例,数组与标量相乘,相当于数组的每个元素乘以这个标量:
a = np.array([1,2])
a * 3
数组逐元素相乘:
a = np.array([1,2])
b = np.array([3,4])
a * b
使用函数:
np.multiply(a, b)
事实上,函数还可以接受第三个参数,表示将结果存入第三个参数中:
np.multiply(a, b, a)
a
运算 | 函数< |
---|---|
== |
equal |
!= |
not_equal |
> |
greater |
>= |
greater_equal |
< |
less |
<= |
less_equal |
logical_and |
|
logical_or |
|
logical_xor |
|
logical_not |
|
& |
bitwise_and |
bitwise_or |
|
^ |
bitwise_xor |
~ |
invert |
>> |
right_shift |
<< |
left_shift |
等于操作也是逐元素比较的:
a = np.array([[1,2,3,4],
[2,3,4,5]])
b = np.array([[1,2,5,4],
[1,3,4,5]])
a == b
这意味着,如果我们在条件中要判断两个数组是否一样时,不能直接使用
if a == b:
而要使用:
if all(a==b):
对于浮点数,由于存在精度问题,使用函数 allclose
会更好:
if allclose(a,b):
logical_and
也是逐元素的 and
操作:
a = np.array([0,1,2])
b = np.array([0,10,0])
np.logical_and(a, b)
0
被认为是 False
,非零则是 True
。
比特操作:
a = np.array([1,2,4,8])
b = np.array([16,32,64,128])
a | b
取反:
a = np.array([1,2,3,4], np.uint8)
~a
左移:
a << 3
要注意的是 &
的运算优先于比较运算如 >
等,所以必要时候需要加上括号:
a = np.array([1,2,4,8])
b = np.array([16,32,64,128])
(a > 3) & (b < 100)